﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Circo.Framework.BusinessLogic.Views.Filters;
using SC.eWedding.BusinessLogic.Views;
using SC.eWedding.BusinessLogic.Handlers;

public partial class Proveedor_Controles_ucUbicacion : System.Web.UI.UserControl
{
    #region Propiedades Privadas

    private int Localidad
    {
        get { return int.Parse(ddlLocalidad.SelectedValue); }
        set { ddlLocalidad.SelectedValue = value.ToString(); }
    }

    private int Provincia
    {
        get { return int.Parse(ddlProvincia.SelectedValue); }
        set { ddlProvincia.SelectedValue = value.ToString(); }
    }

    private List<ProdSerLocView> Localidades
    {
        get
        {
            if (Session["Localidades"] == null)
                Session["Localidades"] = new List<ProdSerLocView>();
            return (List<ProdSerLocView>)Session["Localidades"];
        }
        set { Session["Localidades"] = value; }
    }

    #endregion

    #region Eventos
    
    protected void lbAgregar_Click(object sender, EventArgs e)
    {
        if (Localidad != -1 && !Localidades.Exists(delegate(ProdSerLocView pslv) { return pslv.Localidad.Id == Localidad; }))
        {
            ProdSerLocView psl = new ProdSerLocView();
            psl.Id = -Localidad;
            psl.Localidad = LocalidadHandler.FindById(Localidad);
            Localidades.Add(psl);
        }
        Provincia = -1;
        CargarGrilla();
        HabilitarControles();
    }

    protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
    {
        CargarComboLocalidad();
    }

    protected void gvUbicacion_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int id = Convert.ToInt32(gvUbicacion.DataKeys[e.RowIndex].Values["Id"]);

        Localidades.Remove(Localidades.Find(delegate(ProdSerLocView pslv) { return pslv.Id == id; }));

        CargarGrilla();
    }

    #endregion

    #region Metodos Publicos

    public void CargarGrilla()
    {
        gvUbicacion.DataSource = Localidades;
        gvUbicacion.DataBind();
    }

    public void CargarCombos()
    {
        CargarComboProvincia();
        CargarComboLocalidad();
    }

    public void HabilitarControles()
    {        
        if (Localidades.Count >= 3) 
        {
            ddlProvincia.Enabled = false;
            ddlLocalidad.Enabled = false;
        }
    }

    #endregion

    #region Metodos Privados

    private void CargarComboProvincia()
    {
        List<ProvinciaView> provincias = new List<ProvinciaView>();

        ProvinciaView tipoSel = new ProvinciaView();
        tipoSel.Id = -1;
        tipoSel.Nombre = "<Seleccionar>";

        provincias.Add(tipoSel);
        provincias.AddRange(ProvinciaHandler.FindAll());

        ddlProvincia.DataSource = provincias;
        ddlProvincia.DataBind();
    }

    private void CargarComboLocalidad()
    {
        List<LocalidadView> localidades = new List<LocalidadView>();

        LocalidadView tipoSel = new LocalidadView();
        tipoSel.Id = -1;
        tipoSel.Nombre = "<Seleccionar>";
        localidades.Add(tipoSel);

        if (Provincia != -1)
        {
            List<ViewFilter> filtros = new List<ViewFilter>();

            filtros.Add(new ViewCommonFilter("Provincia", Provincia));
            localidades.AddRange(LocalidadHandler.FindBy(filtros));
        }
        ddlLocalidad.Enabled = Provincia != -1;
        ddlLocalidad.DataSource = localidades;
        ddlLocalidad.DataBind();
    }

    #endregion
}
